home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cdity / MRQ.lha / MRQ / Source / gfxfiles.c < prev    next >
C/C++ Source or Header  |  2000-10-16  |  3KB  |  122 lines

  1. /* gfxfiles.c
  2. ** Guigfx/datatypes handling, gfx file stuff
  3. **
  4. ** ©1997-1999 by Matthias.Bethke <Matthias.Bethke@gmx.net>
  5. ** You are free to modify this source or use parts of it in your
  6. ** own programs as long as they are distributed as freeware.
  7. */
  8.  
  9. /*
  10. ** $Id: gfxfiles.c 1.2 2000/01/25 17:31:21 msbethke Exp msbethke $
  11. **
  12. ** $Log: gfxfiles.c $
  13. ** Revision 1.2  2000/01/25 17:31:21  msbethke
  14. ** Adapted to new header names
  15. **
  16. ** Revision 1.1  2000/01/25 17:21:27  msbethke
  17. ** Initial revision
  18. **
  19. */
  20.  
  21.  
  22. #include <proto/exec.h>
  23. #include <proto/dos.h>
  24. #include <proto/locale.h>
  25. #include <proto/graphics.h>
  26. #include <proto/intuition.h>
  27. #include <proto/datatypes.h>
  28. #include <proto/guigfx.h>
  29. #include <exec/memory.h>
  30. #include <dos/dosextens.h>
  31. #include <guigfx/guigfx.h>
  32. #include <lib/mb_utils.h>
  33. #include <string.h>
  34. #include <stdlib.h>
  35. #include "mrq.h"
  36. #include "config.h"
  37. #include "gfxfiles.h"
  38.  
  39. /* local protos */
  40. static void LoadImageButton(struct MRQImageButton*, STRPTR);
  41.  
  42.  
  43. /* GetFileType()
  44. ** Checks a file's type and returns a mask of MIF_xxx flags
  45. ** currently only MIF_ANIMATION for ReqAttack anims implemented
  46. */
  47. /*
  48. ULONG GetFileType(STRPTR name)
  49. {
  50. ULONG flags=0;
  51. BPTR fh;
  52.  
  53.     if(fh = Open(name,MODE_OLDFILE))
  54.     {
  55.         UBYTE filebuf[6];
  56.  
  57.         if(Read(fh,filebuf,sizeof(filebuf)) == sizeof(filebuf))
  58.         {
  59.             if(strncmp(filebuf,"RAIM",4) == 0) flags |= MIF_ANIMATION;
  60.         }
  61.         Close(fh);
  62.     }
  63.     return flags;
  64. }
  65. */
  66.  
  67. BOOL PreloadImage(STRPTR file, struct MRQImage *img)
  68. {
  69.     return (BOOL)(img->mi_Object = LoadPicture(file,GGFX_UseMask,TRUE,TAG_DONE));
  70. }
  71.  
  72. void FreePreloaded(struct MRQConfig *cfg)
  73. {
  74. struct MRQEventClass *mec;
  75. APTR o;
  76.  
  77.     if(o = cfg->mc_DefClass.mec_Image.mi_Object) DeletePicture(o);
  78.  
  79.     for(    mec = (struct MRQEventClass*)(cfg->mc_ClassList.mlh_Head);
  80.             mec->mec_Node.mln_Succ;
  81.             mec=(struct MRQEventClass*)(mec->mec_Node.mln_Succ))    
  82.     {
  83.         if((o = mec->mec_Image.mi_Object) &&
  84.             (!(((struct MRQImage*)o)->mi_Flags & MIF_FILENAME)))
  85.         {
  86.             prdebug("Freeing preloaded image @$%08lx\n",o);
  87.             DeletePicture(o);
  88.         }
  89.     }
  90. }
  91.  
  92. static void LoadImageButton(struct MRQImageButton *ib, STRPTR filename)
  93. {
  94. char *err;
  95.  
  96.     if(filename)
  97.     {
  98.         if(ib->mib_Picture = LoadPicture(filename,GGFX_UseMask,TRUE,TAG_DONE))
  99.             prdebug("Imagebutton loaded: %s\n",filename);
  100.         else
  101.             err = "file not found or corrupt:";
  102.     } else err ="missing filename";
  103.  
  104.     if(ib->mib_Picture == NULL)
  105.         prdebug("Imagebutton loading failed: %s %s\n",err,filename?(char*)filename:"");
  106. }
  107.  
  108. void ReadImageButtons(struct MRQConfig *cfg)
  109. {
  110.     LoadImageButton(&cfg->mc_IButton_Yes,ttVars.IB_Yes);
  111.     LoadImageButton(&cfg->mc_IButton_No,ttVars.IB_No);
  112.     LoadImageButton(&cfg->mc_IButton_Cancel,ttVars.IB_Cancel);
  113. }
  114.  
  115. void FreeImageButtons(struct MRQConfig *cfg)
  116. {
  117.     /* color tables will be released when the pool is deleted */
  118.     if(cfg->mc_IButton_Yes.mib_Picture) DeletePicture(cfg->mc_IButton_Yes.mib_Picture);
  119.     if(cfg->mc_IButton_No.mib_Picture) DeletePicture(cfg->mc_IButton_No.mib_Picture);
  120.     if(cfg->mc_IButton_Cancel.mib_Picture) DeletePicture(cfg->mc_IButton_Cancel.mib_Picture);
  121. }
  122.